# Makefile 是否重新编译取决于一堆依赖关系是否有变化
# 如果想修改 Makefile 后执行make会重新编译，则需要
# 将 Makefile 也加到依赖关系中去

# $@  表示目标文件
# $^  表示所有的依赖文件
# $<  表示第一个依赖文件
# $?  表示比目标还要新的依赖文件列表

EXEC=hello.exe
OBJ=hello.o
SRC=hello.c
OPT=-O2

run: $(EXEC)
	echo "--------Run--------"
	./$(EXEC)

all: $(EXEC)

$(EXEC): $(OBJ) Makefile
	gcc $< $(OPT) -o $@

$(OBJ): $(SRC)
	gcc -c $? -o $@ 

clean:
	rm -f $(OBJ) $(EXEC)
